#include <stdio.h>
#include <stdlib.h>
/*
You need gcc -g code.c to annotate debug info. Otherwise debugger cannot work.
I had a similar problem you have to install from cygwin gcc-debuginfo or gdb-debuginfo or both
    gcc -g .\5-24main函数原型及命令行参数.c -o .\5-24main函数原型及命令行参数

.\5-24main函数原型及命令行参数.exe echo 1 2 3
argc = 5
argv[0] = F:\gitee\cprogramm\C语言解惑：指针、数组、函数和多文件编程\5-24main函数
原型及命令行参数.exe
argv[1] = echo
argv[2] = 1
argv[3] = 2
argv[4] = 3

*/
void main(int argc, char *argv[])
{
    int i;
    printf("argc = %d\n", argc);
    for (i = 0; i < argc; ++i)
    {
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    system("pause");
}

/*

main函数是一个特殊的函数。
    每个C程序都必须有一个名为main的函数，程序从这里开始执行。
    C语言可以对没有main函数的程序部分进行编译，
    但若其他模块也没有包含main函数，则连接失败。

main函数另一个独特的属性是，它有两种正式的原型且经常会使用一些其他形式。
两种标准原型如下
    int main(void);
    int main(int argc, char* argv[]); // main函数可以获得命令行参数的个数及参数的内容。
    整型返回值的作用是向系统返回一个程序的状态码，
    这在复杂应用    程序的过程间通信    时会用到，
    不过它对单一的程序是没有什么意义的。
    在这种状态下，可以采非标准的形式，如“void main（void）”

    第1个参数argc，是表示被调用程序所带命令行参数的数目；
    第2个参数argv, 是指针数组，其中每个元素是指向包含命令行参数的字符串的指针，
    即每个指针对应一个字符串，而第1个指针(数组元素)指向的通常是命令名（main所在程序文件名）字符串。
*/
